package com.example.demo.array;

import java.util.Arrays;

/**
 * 给一个数组，实现奇数在前，偶数在后的排序
 */
public class ArraySort {

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        fun(arr);
        System.out.println(Arrays.toString(arr));
    }

    private static void fun(int[] arr) {
        int front = 0, end = arr.length - 1;//设置两个指针，一个指向头部，一个指向尾部
        if (arr.length == 0) {
            return;
        }

        while (front < end) {
            while (front < arr.length && arr[front] % 2 == 1) {//从前往后找偶数
                front++;
            }
            while (end >= 0 && arr[end] % 2 == 0) {//从后往前找奇数
                end--;
            }
            if (front < end) {//将前面的偶数与后面奇数交换位置
                int temp = arr[front];
                arr[front] = arr[end];
                arr[end] = temp;
            }
        }
    }

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int a = 0;
        int i = 0;
        int j = 0;
        int[] res = new int[m + n];

        while (i < m || j < n) {
            if (i == m) {
                res[a] = nums2[j];
                j++;
            } else if (j == n) {
                res[a] = nums1[i];
                i++;
            } else if (nums1[i] < nums2[j]) {
                res[a] = nums1[i];
                i++;
            } else {
                res[a] = nums2[j];
                j++;
            }
            a++;
        }

        for (int k = 0; k < m + n; k++) {
            nums1[k] = res[k];
        }
    }
}
